// chapterdetail.js
// 获取app实例
const app = getApp();

Page({
  /**
   * 页面配置
   */
  options: {
    disableScroll: true // 禁用页面滚动
  },
  data: {
    // 章节信息
    chapterId: '',
    chapterName: '',
    subjectId: '',
    subjectName: '',
    // 问题列表数据
    questions: [],
    // 加载状态
    showLoading: true,
    loadingMore: false,
    hasMore: true,
    // 分页参数
    page: 1,
    pageSize: 20,
    // 总题数
    totalCount: 0,
    // 自定义头部高度
    totalHeaderHeightall: 0
  },
  
  /**
   * 滚动到底部时触发，加载更多数据
   */
  onReachBottom: function() {
    this.loadQuestions(true); // 调用加载更多方法
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    
    // 获取页面参数
    this.setData({
      chapterId: options.chapterId || options.id || '',
      chapterName: decodeURIComponent(options.chapterName || options.chapterName || ''),
      subjectId: options.subjectId || '',
      subjectName: decodeURIComponent(options.subjectName || options.subjectName || '')
    });
    
    // 初始化加载问题列表
    this.loadQuestions();
  },
  
  onReady: function() {
    // 从app.globalData获取头部高度，与其他页面保持一致
    this.setData({
      totalHeaderHeightall: app.globalData?.totalHeaderHeight || 0
    });
    console.log('设置头部高度:', this.data.totalHeaderHeightall);
  },



  /**
   * 处理问题点击事件
   */
  onQuestionTap: async function(e) {
    const questionId = e.currentTarget.dataset.id;
    const questionIndex = e.currentTarget.dataset.index || 0;
    
    // 显示加载提示
    wx.showLoading({
      title: '准备答题卡...',
      mask: true
    });
    
    try {
      // 先获取或创建答题卡
      const answerCardRes = await app.api.getOrCreateAnswerCard({
        subjectId: this.data.subjectId,
        chapterId: this.data.chapterId,
        cardType: 'chapter', // 章节类型答题卡
        questionIndex: questionIndex
      });
      

      
      // 跳转到答题页面，传递相关参数
      wx.navigateTo({
        url: `/pages/dati/dati?questionId=${questionId}&chapterId=${this.data.chapterId}&chapterName=${encodeURIComponent(this.data.chapterName)}&subjectId=${this.data.subjectId}&subjectName=${encodeURIComponent(this.data.subjectName)}&questionIndex=${questionIndex}&answerCardId=${answerCardRes.data.card_id}`
      });
      
    } catch (error) {
      wx.showToast({
        title: '答题卡创建失败，请重试',
        icon: 'none'
      });
    } finally {
      wx.hideLoading();
    }
  },

  /**
   * 加载问题列表（支持分页）
   * @param {boolean} isLoadMore 是否是加载更多
   */
  loadQuestions: function(isLoadMore = false) {
    // 如果是加载更多且没有更多数据或已经在加载中，则不执行
    if (isLoadMore) {
      if (!this.data.hasMore || this.data.loadingMore) {
        return;
      }
      // 显示加载更多状态
      this.setData({
        loadingMore: true
      });
    } else {
      // 显示初始加载状态
      this.setData({
        showLoading: true,
        page: 1,  // 重置页码
        hasMore: true  // 重置是否有更多数据
      });
    }
    
    // 确保参数为数字类型
    const chapterId = parseInt(this.data.chapterId) || 0;
    const subjectId = parseInt(this.data.subjectId) || 0;
    const page = this.data.page;
    const pageSize = this.data.pageSize;
    
    console.log('加载问题列表参数:', {chapterId, subjectId, page, pageSize});

    // 调用API获取问题列表（添加分页参数）
    app.api.getQuestionsByChapter({
      chapterId: chapterId,
      subjectId: subjectId,
      page: page,
      pageSize: pageSize
    }).then(res => {
      console.log('获取问题列表成功:', res);
      
      // 处理返回数据
      if (res && res.data && res.data.list && Array.isArray(res.data.list)) {
        const newQuestions = res.data.list;
        const total = res.data.total || 0;
        // 根据是否是加载更多来决定是替换还是追加数据
        const questions = isLoadMore ? [...this.data.questions, ...newQuestions] : newQuestions;
        // 判断是否还有更多数据
        const hasMore = questions.length < total;
        
        this.setData({
          questions: questions,
          totalCount: total,
          showLoading: false,
          loadingMore: false,
          hasMore: hasMore,
          page: page + 1  // 页码加1，为下次加载做准备
        });
        
        // 更新页面标题
        wx.setNavigationBarTitle({
          title: `${this.data.chapterName} - 共${total}题`
        });
      } else {
        // 处理数据为空的情况
        this.setData({
          questions: [],
          totalCount: 0,
          showLoading: false
        });
      }
    }).catch(err => {
      this.setData({
        showLoading: false
      });
      // 显示错误提示
      wx.showToast({
        title: '加载失败，请重试',
        icon: 'none'
      });
    });
  },
  
  /**
   * 获取题目类型
   */
  getQuestionType: function(type) {
    switch(type) {
      case 1:
        return '单选题';
      case 2:
        return '多选题';
      case 3:
        return '判断题';
      default:
        return '单选题';
    }
  }
});